package repository;

import model.Borrower;
import model.Resource;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 资源仓库，使用集合框架管理资源和借阅者数据。
 */
public class ResourceRepository {
    private final Map<String, Resource> resources;
    private final Map<String, Borrower> borrowers;

    /**
     * 构造方法，初始化预填充数据。
     */
    public ResourceRepository() {
        this.resources = new HashMap<>();
        this.borrowers = new HashMap<>();

        // 初始化预填充数据
        initializeSampleData();
    }

    /**
     * 初始化预填充的资源和借阅者。
     */
    private void initializeSampleData() {
        // 添加预填充资源
        for (Resource resource : Resource.getSampleResources()) {
            resources.put(resource.getId(), resource);
        }

        // 添加预填充借阅者
        for (Borrower borrower : Borrower.getSampleBorrowers()) {
            borrowers.put(borrower.getId(), borrower);
        }
    }

    /**
     * 获取资源。
     * @param id 资源ID
     * @return 对应的资源对象
     */
    public Resource getResourceById(String id) {
        return resources.get(id);
    }

    /**
     * 获取借阅者。
     * @param id 借阅者ID
     * @return 对应的借阅者对象
     */
    public Borrower getBorrowerById(String id) {
        return borrowers.get(id);
    }

    /**
     * 获取所有资源。
     * @return 资源列表
     */
    public List<Resource> getAllResources() {
        return new ArrayList<>(resources.values());
    }

    /**
     * 获取所有借阅者。
     * @return 借阅者列表
     */
    public List<Borrower> getAllBorrowers() {
        return new ArrayList<>(borrowers.values());
    }

    /**
     * 保存更改（可扩展为持久化存储）。
     */
    public void saveChanges() {
        // 可扩展为写入文件或数据库
    }
}
